package org.zyj.io.example.codec;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

public class ToIntDecoder extends ByteToMessageDecoder {
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
        //每次入站, 从ByteBuf中读取4字节, 将其解码为一个int
        //然后将这个解码出来的int, 添加到下一个list中
        //当没有更多元素可以被添加到该list中时, 它的内容将会被发送给下一个ChannelInboundHandler
        //int在被添加到List中时, 会被自动装箱为Integer, 在调用readInt()方法前, 必须验证所输入的ByteBuf是否具有足够的数据
        if (in.readableBytes() >= 4) {
            out.add(in.readInt());
        }
    }
}
